Naključna števila, modul time ...


Hitri prsti

Če na začetek programa napišemo

  import time

bomo, med drugim, dobili funkcijo time, ki s klicem time.time() vrne čas v sekundah od nekega trenutka v davni preteklosti.

1. podnaloga

Kako hitro razmišljamo

Napiši program, ki uporabnika vpraša, koliko je a krat b. pri tem sta a inb dve naključni enomestni naravni števili. Uporabnik bo premislil in vpisal odgovor. Program naj izpiše, koliko sekund je človek potreboval za razmišljanje, ter, če je odgovor pravilen. Namig: če veš, koliko je bila ura pred klicem funkcije input in koliko je bila ura po klicu, znaš izračunati, koliko časa je minilo vmes.

>>>Koliko je 6 x 7: 42
Čestitam! Odgovor je pravilen. Za odgovor si potreboval 2.503019332885742 s.

Uradna rešitev

import time
import random
a = random.randint(1, 9)
b = random.randint(1, 9)
začetek = time.time()
odg = int(input('Koliko je ' + str(a) + ' x ' + str(b) + ': '))
konec = time.time()
if odg == a * b:
    print('Čestitam! Odgovor je pravilen.', end = " ")
else:
    print('Žal narobe! Prav je ' + str(a*b) + '!', end = " ")
print('Za odgovor si potreboval', konec - začetek, 's')

2. podnaloga

Misleči stroj I

Oglej si, kaj počne naslednji program:

import time

a = int(input('Prvo število: '))
b = int(input('Drugo število: '))
print('Računam ...')
time.sleep(3)
print('Uf, je bilo težko. V 3 sek so se moji čipi pošteno ogreli. Rezultat je:', a*b)

nato ga spremeni tako, da bo računalnik razmišljal med 1 in 5 sekundami! Pri tem lahko čaka tudi npr. 4.371232 sekunde ali pa točno 5! Oglej si dokumentacijo in poišči ustrezno funkcijo. Čas razmišljanja izpiši zaokroženo na tisočinke!

Uradna rešitev

import time
import random

a = int(input('Prvo število: '))
b = int(input('Drugo število: '))
print('Računam ...')
časČakanja = random.uniform(1, 5)
time.sleepasČakanja)
print('Uf, je bilo težko. V', roundasČakanja,3), 'sek so se moji čipi pošteno ogreli. Rezultat je:', a*b)

3. podnaloga

Misleči stroj II

Večji kot je produkt, težji je račun. Računalnik naj zato čaka toliko sekund, kolikor je velik produkt, deljeno z 10. Če mu damo množiti 6 in 7, naj pred izpisom počaka 4.2 sekunde. Če je katero od števil negativno, naj vedno čaka 2 sekundi več, kot bi čakal pri pozitivnih številih. V nobenem primeru pa čas čakanja ne sme biti več kot 10 sekund.

Izpis naj bo tak, kot ga predvideva zgornji program!

Uradna rešitev

import time

a = int(input('Prvo število: '))
b = int(input('Drugo število: '))
print('Računam ...')
časČakanja = abs(a * b) / 10
if a < 0 or b < 0: # za negativna števila
    časČakanja = časČakanja + 2
if časČakanja > 10:
    časČakanja = 10
time.sleepasČakanja)
print('Uf, je bilo težko. V', časČakanja, 'sek so se moji čipi pošteno ogreli. Rezultat je:', a*b)

Okulist Tone

1. podnaloga

Okulist Tone želi svojim strankam poslati program za kontrolo vida. Napiši mu program, ki bo izpisal med 10 in 20 znakov *, ločenih s presledki. Uporabnik jih mora prešteti in vnesti odgovor. Na podlagi odgovora naj program izpiše, ali mora uporabnik k okulistu Tonetu ali ne.

    >>>* * * * * * * * * *
    Koliko * vidite: 11
    Prosim, zglasite se pri okulistu Tonetu.

    >>>* * * * * * * * * * * * *
    Koliko * vidite: 13
    Vaš vid je še dober.

Uradna rešitev

import random

koliko = random.randint(10, 20)
vzorec = '* ' * koliko
print(vzorec)
odg = int(input('Koliko * vidite: '))
if odg == koliko:
    print('Vaš vid je še dober.')
else:
    print('Prosim, zglasite se pri okulistu Tonetu.')